//实用类设计
//1. 获取系统时间
//2. 判断当前文件是否存在
//3. 获取当前文件的所在文件目录路径
//4. 创建目录

#ifndef _M_UTIL_H__
#define _M_UTIL_H__
#include<iostream>
#include<fstream>
#include<cassert>
#include<string>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
using namespace std;

namespace bitlog{
    namespace util{
        //获取当前系统时间
        class date{
            public:
            static size_t now(){
                return (size_t)time(nullptr);
            }
        };
        class file{
            public:
            static bool exists(const string& filename){
                struct stat st;
                return stat(filename.c_str(),&st)==0;
            }
            static string path(const string& filename){
                if(filename.empty()) return ".";
                int pos=filename.find_last_of("/\\");
                if(pos==string::npos) return ".";
                return filename.substr(0,pos+1);
            }
            static void create_dir(const string& path){
                if(path.empty()) return;
                if(exists(path)) return;
                size_t pos,idx=0;
                while(idx<path.size()){
                    pos=path.find_first_of("/\\",idx);
                    if(pos==string::npos){
                        mkdir(path.c_str(),0755);
                        return;
                    }
                    if(pos==idx){
                        idx=pos+1;
                        continue;
                    }
                    string str=path.substr(0,pos);
                    if(str=="."||str==".."){
                        idx=pos+1;
                        continue;;
                    }
                    if(exists(str)) {idx=pos+1; continue;}
                    mkdir(str.c_str(),0755);
                    idx=pos+1;
                }
            }
        };
    }
    
}


#endif